package fiuba.algo3.persistencia;

import java.util.List;

import fiuba.algo3.XMLProcessor.nucleo.NodoXML;
import fiuba.algo3.mundo.Pais;
import fiuba.algo3.mundo.Posicion;

public abstract class ConstructorPais
{
	public static final String CLASE = "Pais";

	private static boolean puedeSerConstruido(NodoXML nodo)
	{
		return nodo.nombre().equals("objeto") &&
				nodo.obtenerValorAtributo("clase").equals(CLASE);
	}
	
	public static Pais construir(NodoXML nodoObjetoPais)
	{
		if (!puedeSerConstruido(nodoObjetoPais)) return null;

		List<NodoXML> tablaValores = nodoObjetoPais.obtenerHijos();

		String nombre = "";
		Posicion posicion = new Posicion(0,0);

		for (NodoXML nodo : tablaValores)
		{
			if (nodo.nombre().equals("campo"))
				{
					String valor = nodo.obtenerValorAtributo("nombre");
					if (valor.equals("nombre"))
						nombre = (String)ConstructorPrimitivos.construir(nodo.obtenerPrimogenito());
					else if (valor.equals("posicion"))
						posicion = ConstructorPosicion.construir(nodo.obtenerPrimogenito());
				}
		}

		return new Pais(posicion, nombre);
	}

	public static Pais[] construir(List<NodoXML> listaNodosPaises)
	{
		int cantidadElementos = listaNodosPaises.size();
		Pais[] listaPaises = new Pais[cantidadElementos];

		for (int i = 0; i < cantidadElementos; i++)
			listaPaises[i] = construir(listaNodosPaises.get(i));

		return listaPaises;
	}
}
